#include<iostream>
using namespace std;

struct ListNode {
	int val;
	ListNode* next;
	ListNode() : val(0), next(nullptr) {}
	ListNode(int x) : val(x), next(nullptr) {}
	ListNode(int x, ListNode* next) : val(x), next(next) {}
};

class Solution {
public:
	ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
		ListNode* newhead = new ListNode(-1);
		ListNode* cur1 = l1, * cur2 = l2;
		ListNode* cur = newhead;
		int t = 0;
		while (cur1 || cur2) {
			if (cur1) {
				t += cur1->val;
				cur1 = cur1->next;
			}
			if (cur2) {
				t += cur2->val;
				cur2 = cur2->next;
			}
			ListNode* newnode = new ListNode(t % 10);
			t /= 10;
			cur->next = newnode;
			newnode->next = nullptr;
			cur = cur->next;
		}
		if (t > 0) {
			ListNode* newnode = new ListNode(t % 10);
			t /= 10;
			cur->next = newnode;
			newnode->next = nullptr;
			cur = cur->next;
		}
		return newhead->next;
	}
};
int main() {

	return 0;
}